#ifndef GENERIC_SCHEDULER_H
#define GENERIC_SCHEDULER_H

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string.h>
#include <list>
#include "process.h"

using namespace std;

class Generic_Scheduler {

	public:
		Generic_Scheduler ();	
		virtual ~Generic_Scheduler ();

		void read_in (string);
		void sort_processes ();
		void start ();
		void show_gantt ();

	protected:

	private:
		virtual void begin (list <Process> *) = 0;
		Process * parse (string);

		list <Process> * processes;

};

class Compare_Arrival {
	public:
		bool operator() (const Process & p1, const Process & p2);
};

#endif
